package org.example.campusforum.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 评论发布请求数据传输对象
 *
 * 用于接收前端发送的评论发布请求参数，支持顶级评论和回复评论。
 * 通过parentId和replyUserId字段区分评论类型和回复关系。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CommentPublish {

    /**
     * 所属文章ID
     * 评论所属的文章ID，必填字段
     */
    private Long articleId;

    /**
     * 评论内容
     * 用户输入的评论文本内容，必填字段
     */
    private String content;

    /**
     * 父评论ID
     * 0: 表示顶级评论（直接对文章的评论）
     * 非0: 表示回复评论（对其他评论的回复）
     */
    private Long parentId;

    /**
     * 发表评论的用户ID
     * 评论发表者的用户ID，通常从JWT令牌中获取
     */
    private Long postUserId;

    /**
     * 被回复的用户ID
     * 0: 表示顶级评论，无被回复用户
     * 非0: 表示回复评论，指向被回复的用户
     */
    private Long replyUserId;
}
